package com.banyuan.lesson.设计模式.singleton;

/*
 * 懒汉式单例；
 * 延迟加载；
 * 不用我就不加载*/
public class LazySingleton {

    //volatile关键字很重要；
    private static volatile LazySingleton lazySingleton = null;

    private LazySingleton(){

    }

    //双检索；
    public static LazySingleton getInstance(){

        //第一个判断提高了效率，减少了加锁的过程；
        if(null == lazySingleton){
            synchronized (LazySingleton.class){
                //第二判断确保了线程安全；
                if (null == lazySingleton){
                    lazySingleton = new LazySingleton();
                }
            }
        }
        return lazySingleton;
    }
}
